基本上,我需要的是我的业务表中的template_id字段要正确分配,这样如果我做了Business.first.template,它将返回当前为该业务分配的模板的结果。目前我得到的只是'nil'
在我的项目中,业务属于一个模板(我相信这会将主键放在模板表中,而外键放在业务表中)。
class Business < ActiveRecord::Base
belongs_to :template
class Template < ActiveRecord::Base
has_many :businesses
当用户填写“新业务”表单时,他们会选择要使用的模板。模板表已经填充了3个模板,template_id,0,1,2(所以如果需要'创建',我真的无法解决)。通过表单限制用户只选择3个模板中的一个(单选按钮)。
提交表单和创建业务时,当前未创建业务和模板之间的链接。我在业务类中没有关于模板创建的任何内容,因为我无法确定需要创建的内容,模板记录已经存在于模板表中并且是静态的。
Business Controller
def new
@business = current_user.businesses.build
@business.addresses.build
end
# POST /businesses
def create
@business = Business.new(business_params)
@business.users << current_user
if @business.save
redirect_to @business, notice: 'Business was successfully created.'
else
render action: 'new'
end
end
def business_params
params.require(:business).permit(:name, :email, :template_id, addresses_attributes [:number, :street, :suburb, :state, :country], template_attributes: [:name])
我不确定自己是应该自己分配template_id还是使用'build_template'来做某事
模式
create_table "businesses", force: true do |t|
t.datetime "created_at"
t.datetime "updated_at"
t.string "name"
t.string "description"
t.string "sub_heading"
t.string "email"
t.integer "template_id"
end
create_table "templates", force: true do |t|
t.datetime "created_at"
t.datetime "updated_at"
t.string "name"
t.integer "cost"
end
我不确定是否应该将值直接从用户提交的表单中的0,1或2分配给业务表中的template_id,或者我是否应该允许嵌套属性,就像我对地址表所做的那样
感谢任何帮助。 感谢
答案 0 :(得分:0)
模板ID的外键可以正常使用。它将Business
的实例与Template
的实例绑定在一起。
您不是在创建模板,而是从已创建模板列表中选择一个模板。您可以访问商家的模板应该像Business.find(id).template
一样简单,其中Id是您想要了解的商家的ID。