我遇到了一些理论上的麻烦。类别结构
我有一个名为Promos的模型,我也有一个叫做Categories的模型。
我希望管理员能够创建设置类别,用户可以在下拉列表中选择要分配的促销。所以,Promos将属于一个类别,但该作品应该在创作中发生。
推荐的结构是什么?
我遇到了一些理论上的麻烦。类别结构
我有一个名为Promos的模型,我也有一个叫做Categories的模型。
我希望管理员能够创建设置类别,用户可以在下拉列表中选择要分配的促销。所以,Promos将属于一个类别,但该作品应该在创作中发生。
推荐的结构是什么?
为了确保每一个促销有一个类别:
class Category < ActiveRecord::Base
has_many :promos
end
class Promo < ActiveRecord::Base
belongs_to :category
validates_association_of :category
end
如何
promo = Promo.new(:category => @category)
就定在推广创建时的类别为形式去:
<% form_for :promo do |f| %>
<%= f.collection_select :category_id, Category.all, :id, :name, :prompt => "Choose a category" %>
...
Other promo fields
...
<% end %>
匹配控制器代码:
class PromosController < ActionController
def create
@promo = Promo.create(params[:promo])
...
redirect or render whether @promo was successfully created
...
end
end
用户has_many宣传片,属于一个类别。 类别has_many宣传片。
如:
class User < Activerecord::Base
has_many :promos
class Promo < Activerecord::Base
belongs_to :user
belongs_to :category
class Category < Activerecord::Base
has_many :promos
<是子类操作者,不>。您需要将类别关联到用户或将'attr_accessor:user'添加到类别,以允许控制器将用户传递给类别。可以在创建测试之前使用它。正如你所写,它有太多问题需要从评论中纠正。 – EmFi 2009-10-24 03:52:05
获取错误的促销新 未初始化常数在这条线的类别: <%= f.collection_select:CATEGORY_ID,Categories.all,:ID,:姓名,:提示=> “选择一个类别” %> 我在create中定义了类似这样的分类:@categories = Category.find(:all) – 2009-10-27 21:46:15
你是对的。它应该是Category.all,而不是Categories.all。这听起来很对,但是型号名称总是单一。 – EmFi 2009-10-27 21:55:40