我有三个模型:一个“用户”,它有多个“制造商”,每个制造商都有多个“类别”。我希望能够通过制造商运行搜索用户的类别,每个用户将有后两个的倍数-一个用户可能有5到6个制造商,每个制造商将有5-6个类别。我将制造商与用户关联起来,但现在我正在尝试通过脚手架表单创建类别,但我无法完成,所以它将manufacturer_id拉入到与制造商和用户相关的表单中。我知道这只是我错过的一个参数,但我以前从来没有做过has_many_through关联。
user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :manufacturers
has_many :categories, through: :manufacturers
endmanufacturer.rb
class Manufacturer < ActiveRecord::Base
belongs_to :user
has_many :categories
endcategory.rb
class Category < ActiveRecord::Base
belongs_to :manufacturer
belongs_to :user
end对于我的制造商的控制器中的create,我只是这样做了:
@manufacturer = current_user.manufacturers.build(manufacturer_params)但是我试着在创建我的类别时做一些类似的事情,它没有提取该类别的制造商的id。这个函数的create函数是什么样子的?它将是类别的创建功能,它与制造商绑定,与用户绑定。
发布于 2014-03-13 07:21:09
@category = current_user.categories.new(category_params)
if @category.save
#do stuff
end使用new方法将给出您的user_id,保存它将给出它的id (成功保存后)。
发布于 2014-03-13 07:23:20
看起来您只是在尝试创建另一个嵌套对象。如果是这种情况,您需要首先找到这两个父对象。
def create
@user = current_user
@manufacturer = @user.manufacturers.find(params[:manufacturer_id])
@category = @manufacturer.categories.build(category_params)
#if save...####
endhttps://stackoverflow.com/questions/22365751
复制相似问题