在 post 中对标记用户有很多关联
Has many association on tagging user in a post
在我的应用程序中,User
可以 Post
他的时间线和 Tag
其他用户在他的 post 中(类似于 facebook)。在我的模型中,我必须知道谁在哪个 post 中被标记以及谁做了标记(总是 post 的所有者)。我在这里找到了与主题标签模型类似的东西,但我无法用它获得预期的结果。
我的第一个问题是:下面的做法对吗?如果是这样,我如何在创建关联之前验证用户的存在?
class User < ActiveRecord::Base
has_many :posts
has_many :tagger_users, class_name: "Tag", foreign_key: "tagger_id"
has_many :tagged_users, class_name: "Tag", foreign_key: "tagged_id"
class Post < ActiveRecord::Base
has_many :tags
class Tag < ActiveRecord::Base
belongs_to :tagger_user
belongs_to :tagged_user
belongs_to :post
validates_presence_of :tagger_user, :tagged_user # This always return ["Tagger post can't be blank", "Tagged post can't be blank"] even when the users are correctly set
我认为正确的做法是让 Tag
属于两个用户,tagged 和 tag。然后 post 可以有一个所有者,以及使用 has_many :through
标记的用户列表
class User < ActiveRecord::Base
has_many :posts
class Post < ActiveRecord::Base
has_many :users, :through: :tags
belongs_to :user
class Tag < ActiveRecord::Base
belongs_to :tagger_user, class_name: user
belongs_to :tagged_user, class_name: :user
validates_presence_of :tagger_user
validates_presence_of :tagged_user
关于验证检查 this 答案。如果结束是有效的,它们应该被自动持久化。
在我的应用程序中,User
可以 Post
他的时间线和 Tag
其他用户在他的 post 中(类似于 facebook)。在我的模型中,我必须知道谁在哪个 post 中被标记以及谁做了标记(总是 post 的所有者)。我在这里找到了与主题标签模型类似的东西,但我无法用它获得预期的结果。
我的第一个问题是:下面的做法对吗?如果是这样,我如何在创建关联之前验证用户的存在?
class User < ActiveRecord::Base
has_many :posts
has_many :tagger_users, class_name: "Tag", foreign_key: "tagger_id"
has_many :tagged_users, class_name: "Tag", foreign_key: "tagged_id"
class Post < ActiveRecord::Base
has_many :tags
class Tag < ActiveRecord::Base
belongs_to :tagger_user
belongs_to :tagged_user
belongs_to :post
validates_presence_of :tagger_user, :tagged_user # This always return ["Tagger post can't be blank", "Tagged post can't be blank"] even when the users are correctly set
我认为正确的做法是让 Tag
属于两个用户,tagged 和 tag。然后 post 可以有一个所有者,以及使用 has_many :through
class User < ActiveRecord::Base
has_many :posts
class Post < ActiveRecord::Base
has_many :users, :through: :tags
belongs_to :user
class Tag < ActiveRecord::Base
belongs_to :tagger_user, class_name: user
belongs_to :tagged_user, class_name: :user
validates_presence_of :tagger_user
validates_presence_of :tagged_user
关于验证检查 this 答案。如果结束是有效的,它们应该被自动持久化。