gpt4 book ai didi

ruby-on-rails - 与变量的关系条件

转载 作者:行者123 更新时间:2023-12-02 05:16:22 26 4
gpt4 key购买 nike

我有以下模型:

class Publication < ActiveRecord::Base
has_many :reviews
has_many :users, :through => :owned_publications
has_many :owned_publications
end

class User < ActiveRecord::Base
has_many :publications, :through => :owned_publications
has_many :owned_publications
end

class OwnedPublication < ActiveRecord::Base
belongs_to :publication
belongs_to :user
has_one :review, :conditions => "user_id = #{self.user.id} AND publication_id = #{self.publication.id}"
end

在第三个模型中,我尝试使用一对变量设置条件。看起来语法有效,只是 self 不是 OwnedPublication 的实例。是否可以获取 OwnedPublication 的当前实例并将其置于条件中?

最佳答案

该解决方案需要使用 :through 和 :source 选项,以及 proc 调用:

has_one :review, :through => :publication, :source => :reviews,
:conditions => proc { ["user_id = ?", self.user_id] }

Proc 是将动态变量传递给 ActiveRecord 关联条件的技巧,至少从 Rails 3.0 开始是这样。只需调用:

has_one :conditions => proc { ["publication_id = ? AND user_id = ?",
self.publication_id, self.user_id] }

虽然不会工作。这是因为关联最终会在评论表中搜索不存在的“reviews.owned_publication_id”列。相反,您可以使用出版物的 :reviews 关联作为来源,通过出版物找到适当的评论。

关于ruby-on-rails - 与变量的关系条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14569732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com