class Product < ActiveRecord::Base
has_many :models, :dependent => :destroy, :order => 'display, title'
class Model < ActiveRecord::Base
belongs_to :product
class GsCollector < ActiveRecord::Base
belongs_to :model
Why can’t I do the following in my form for GsCollector?:
<p>
Model:<br />
<%= collection_select :gs_collector, :model_id, Product.where("title = 'Some Title'").models.all, :id, :title %>
</p>
I get the error:
undefined method `models' for #<ActiveRecord::Relation:0x007fef0ac09350>
Shouldn’t the models method be provided by the relation? In the console, this works:
p = Product.find(4).models
But this doesn’t:
p = Product.where("title = 'some title'").models
Not sure what the difference is….
Here’s my schema:
create_table "gs_collectors", :force => true do |t|
t.integer "project_id"
t.integer "model_id"
t.integer "quantity", :default => 1
t.string "housing", :default => "Base Unit"
t.string "hopper"
t.string "controller"
t.boolean "overbags", :default => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "models", :force => true do |t|
t.string "title"
t.integer "product_id"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "display"
end
create_table "products", :force => true do |t|
t.string "title"
t.datetime "created_at"
t.datetime "updated_at"
end
You are returning an array of objects, collectively called a
ActiveRecord::Relation. This is due to yourwheresearch term. Maybe you want something like the following:wherereturns a list ofProductsfindreturns a singleProduct