2009-10-24 54 views
0

我遇到了一些理论上的麻烦。类别结构

我有一个名为Promos的模型,我也有一个叫做Categories的模型。

我希望管理员能够创建设置类别,用户可以在下拉列表中选择要分配的促销。所以,Promos将属于一个类别,但该作品应该在创作中发生。

推荐的结构是什么?

回答

0

为了确保每一个促销有一个类别:

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 
+0

获取错误的促销新 未初始化常数在这条线的类别: <%= f.collection_select:CATEGORY_ID,Categories.all,:ID,:姓名,:提示=> “选择一个类别” %> 我在create中定义了类似这样的分类:@categories = Category.find(:all) – 2009-10-27 21:46:15

+0

你是对的。它应该是Category.all,而不是Categories.all。这听起来很对,但是型号名称总是单一。 – EmFi 2009-10-27 21:55:40

0

用户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 
+0

<是子类操作者,不>。您需要将类别关联到用户或将'attr_accessor:user'添加到类别,以允许控制器将用户传递给类别。可以在创建测试之前使用它。正如你所写,它有太多问题需要从评论中纠正。 – EmFi 2009-10-24 03:52:05