首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails关系,在has_many_through上创建新模型

Rails关系,在has_many_through上创建新模型
EN

Stack Overflow用户
提问于 2014-03-13 07:06:58
回答 2查看 45关注 0票数 0

我有三个模型:一个“用户”,它有多个“制造商”,每个制造商都有多个“类别”。我希望能够通过制造商运行搜索用户的类别,每个用户将有后两个的倍数-一个用户可能有5到6个制造商,每个制造商将有5-6个类别。我将制造商与用户关联起来,但现在我正在尝试通过脚手架表单创建类别,但我无法完成,所以它将manufacturer_id拉入到与制造商和用户相关的表单中。我知道这只是我错过的一个参数,但我以前从来没有做过has_many_through关联。

user.rb

代码语言:javascript
复制
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
end

manufacturer.rb

代码语言:javascript
复制
class Manufacturer < ActiveRecord::Base
  belongs_to :user
  has_many :categories
end

category.rb

代码语言:javascript
复制
class Category < ActiveRecord::Base
  belongs_to :manufacturer
  belongs_to :user
end

对于我的制造商的控制器中的create,我只是这样做了:

代码语言:javascript
复制
@manufacturer = current_user.manufacturers.build(manufacturer_params)

但是我试着在创建我的类别时做一些类似的事情,它没有提取该类别的制造商的id。这个函数的create函数是什么样子的?它将是类别的创建功能,它与制造商绑定,与用户绑定。

EN

回答 2

Stack Overflow用户

发布于 2014-03-13 07:21:09

代码语言:javascript
复制
@category = current_user.categories.new(category_params)
if @category.save
    #do stuff
end

使用new方法将给出您的user_id,保存它将给出它的id (成功保存后)。

票数 0
EN

Stack Overflow用户

发布于 2014-03-13 07:23:20

看起来您只是在尝试创建另一个嵌套对象。如果是这种情况,您需要首先找到这两个父对象。

代码语言:javascript
复制
def create
  @user = current_user
  @manufacturer = @user.manufacturers.find(params[:manufacturer_id])
  @category = @manufacturer.categories.build(category_params)
  #if save...####
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22365751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档