Articles of rails activerecord

Rotaie dove condizione usando NOT NULL

Usando lo stile 3 delle rotaie come potrei scrivere l’opposto di: Foo.includes(:bar).where(:bars=>{:id=>nil}) Voglio trovare dove id NON è null. Provai: Foo.includes(:bar).where(:bars=>{:id=>!nil}).to_sql Ma ciò restituisce: => “SELECT \”foos\”.* FROM \”foos\” WHERE (\”bars\”.\”id\” = 1)” Questo non è assolutamente ciò di cui ho bisogno, e sembra quasi un bug in ARel.

Accesso a current_user da un modello in Ruby on Rails

Devo implementare il controllo dell’accesso a grana fine in un’app Ruby on Rails. Le autorizzazioni per i singoli utenti sono salvate in una tabella di database e ho pensato che sarebbe meglio lasciare che la rispettiva risorsa (cioè l’istanza di un modello) decida se un determinato utente può leggere o scrivere su di esso. Prendere […]

Combina due oggetti ActiveRecord :: Relation

Supponiamo che abbia i seguenti due oggetti: first_name_relation = User.where(:first_name => ‘Tobias’) # ActiveRecord::Relation last_name_relation = User.where(:last_name => ‘Fünke’) # ActiveRecord::Relation è ansible combinare le due relazioni per produrre un object ActiveRecord::Relation contenente entrambe le condizioni? Nota: sono consapevole di poter concatenare le posizioni per ottenere questo comportamento, ciò a cui sono realmente interessato è […]

ActiveRecord O query notazione hash

So che ci sono 3 notazioni principali per fornire argomenti al metodo di ActiveRecord: Corda pura schieramento hash Specificare and per il metodo where è semplice: # Pure String notation Person.where(“name = ‘Neil’ AND age = 27”) # Array notation Person.where([“name = ? AND age = ?”, ‘Neil’, 27]) # Hash notation Person.where({name: “Neil”, age: […]

Come esprimere una query NOT IN con ActiveRecord / Rails?

Solo per aggiornare questo dato che sembra che molte persone arrivino a questo, se stai usando Rails 4 guarda le risposte di Trung Lê` e VinniVidiVicci. Topic.where.not(forum_id:@forums.map(&:id)) Topic.where(published:true).where.not(forum_id:@forums.map(&:id)) Spero che ci sia una soluzione semplice che non coinvolga find_by_sql , altrimenti non credo che dovrà funzionare. Ho trovato questo articolo che fa riferimento a questo: […]

Record casuale in ActiveRecord

Ho bisogno di ottenere un record casuale da un tavolo tramite ActiveRecord. Ho seguito l’esempio di Jamis Buck del 2006 . Tuttavia, ho anche trovato un altro modo tramite una ricerca su Google (imansible attribuire un collegamento a causa di nuove restrizioni dell’utente): rand_id = rand(Model.count) rand_record = Model.first(:conditions => [“id >= ?”, rand_id]) Sono […]

Connecting Rails 3.1 con più database

A ShowNearby abbiamo fatto una migrazione molto grande a RoR 3.1 da PHP e stiamo affrontando diversi problemi che alcuni di voi potrebbero aver risolto prima. Abbiamo grandi quantità di dati e abbiamo deciso di separare il nostro DB in diversi DB che possiamo gestire separatamente. Ad esempio, i nostri account, luoghi, registri e altri […]

Come posso impostare i valori predefiniti in ActiveRecord?

Come posso impostare il valore predefinito in ActiveRecord? Vedo un post di Pratik che descrive un pezzo di codice brutto e complicato: http://m.onkey.org/2007/7/24/how-to-set-default-values-in-your-model class Item < ActiveRecord::Base def initialize_with_defaults(attrs = nil, &block) initialize_without_defaults(attrs) do setter = lambda { |key, value| self.send("#{key.to_s}=", value) unless !attrs.nil? && attrs.keys.map(&:to_s).include?(key.to_s) } setter.call('scheduler_type', 'hotseat') yield self if block_given? end end […]

Rails 4 scope per trovare genitori senza figli

Ho trovato una risposta che aveva alcuni esempi utilizzabili per trovare genitori con figli, ma lo stesso non è utilizzabile per trovare genitori senza figli (presumibilmente dal momento che il join li esclude). scope :with_children, joins(:children).group(“child_join_table.parent_id”).having(“count(child_join_table.parent_id) > 0”) Qualcuno può indicarmi la giusta direzione?

Rails ActiveRecord data tra

Devo interrogare i commenti fatti in un giorno. Il campo fa parte dei timestamp standard, è creato_at. La data selezionata proviene da una data_select. Come posso usare ActiveRecord per farlo? Ho bisogno di qualcosa del genere: “SELECT * FROM comments WHERE created_at BETWEEN ‘2010-02-03 00:00:00’ AND ‘2010-02-03 23:59:59′”