是否可以使用某种选项创建Rails ActiveRecord属性?这就是我的意思。假设我们有一个名为Article的模型来定义博客文章。其中一个属性表示本文是带有图像的帖子,带有图像的帖子或带有纯文本的帖子。每个选项都会触发不同的布局进行渲染。属性具有一定数量的预定义选项。
如何将此类属性“post type”添加到模型中?
答案 0 :(得分:1)
您的案例看起来像need for implementing Polymorphism。你可以做点什么
class Article < ActiveRecord::Base
belongs_to :articleable, polymorphic: true
end
class Post < ActiveRecord::Base
has_many :articles, as: :articleable
end
class PlainText < ActiveRecord::Base
has_many :articles, as: :articleable
end
#Migration
class CreateArticless < ActiveRecord::Migration
def change
create_table :articles do |t|
t.string :name
t.integer :articleable_id
t.string :articleable_type
t.timestamps
end
end
end
所以基本上你会有一个文章表,'articleable_type'将存储什么类型的文章
答案 1 :(得分:1)
如果您希望对象在系统的不同部分中表现不同,那么实现多态对象(如@ankitg建议的那样)是可行的方法。但是,如果您在视图中只需要一些自定义内容,这种方法可能对您有用。
您可以add an attribute to your model调用post_type
,然后在视图中呈现不同的html,具体取决于post_type
。例如:
在您的视图中
<% if article.post_type == 'image' %>
<!-- some code -->
<% else %>
<!-- some other code -->