rails 模型不同 post 类型
rails model different post types
我想为不同的 post 类型建模
ImagePost
VideoPost
TextPost
。它们都有不同的内容
我打算使用 post has_many 多态但 rails 不支持它
之前的 Whosebug post 将我指向 has_many_polymorphs gem 但已弃用
我需要能够 post 不同的 post 类型并在实例中检索它们并在 Feed 上显示它们
例如
@posts.each do ..
if type == video ...
elseif type == image ....
我是 rails 的新手,非常感谢您的帮助。
考虑执行以下操作
class Post < ActiveRecord::Base
# Create the an association table and add additional info on the association table, description, etc etc.
has_many :images, through: image_posts
has_many :image_posts
end
class Image < ActiveRecord::Base
# Image specific
end
这样做,@post.image_posts.count > 0表示有多个image_posts.
或者你也可以通过多态关系来实现:
class VideoPost < ActiveRecord::Base
belongs_to :postable, polymorphic: true
end
class ImagePost < ActiveRecord::Base
belongs_to :postable, polymorphic: true
end
class Feed < ActiveRecord::Base
has_many :posts, as: :postable
end
在这种情况下,@feed.posts.each 将检查 postable_type,这是模型类型。
使用Post模型的单一table继承
class class Post < ActiveRecord::Base
.....
end
比继承这个 Post 模型到这些模型中。
class VideoPost < Post
end
class ImagePost < Post
end
在迁移时,您需要为 post 的不同类型创建一个类型列。有关详细信息,请查看此 blog post
STI 是必经之路。我想这三种类型的列至少应该相同或相似。所以单层继承是最好的选择。
我想为不同的 post 类型建模
ImagePost
VideoPost
TextPost
。它们都有不同的内容
我打算使用 post has_many 多态但 rails 不支持它
之前的 Whosebug post 将我指向 has_many_polymorphs gem 但已弃用
我需要能够 post 不同的 post 类型并在实例中检索它们并在 Feed 上显示它们 例如
@posts.each do ..
if type == video ...
elseif type == image ....
我是 rails 的新手,非常感谢您的帮助。
考虑执行以下操作
class Post < ActiveRecord::Base
# Create the an association table and add additional info on the association table, description, etc etc.
has_many :images, through: image_posts
has_many :image_posts
end
class Image < ActiveRecord::Base
# Image specific
end
这样做,@post.image_posts.count > 0表示有多个image_posts.
或者你也可以通过多态关系来实现:
class VideoPost < ActiveRecord::Base
belongs_to :postable, polymorphic: true
end
class ImagePost < ActiveRecord::Base
belongs_to :postable, polymorphic: true
end
class Feed < ActiveRecord::Base
has_many :posts, as: :postable
end
在这种情况下,@feed.posts.each 将检查 postable_type,这是模型类型。
使用Post模型的单一table继承
class class Post < ActiveRecord::Base
.....
end
比继承这个 Post 模型到这些模型中。
class VideoPost < Post
end
class ImagePost < Post
end
在迁移时,您需要为 post 的不同类型创建一个类型列。有关详细信息,请查看此 blog post
STI 是必经之路。我想这三种类型的列至少应该相同或相似。所以单层继承是最好的选择。