"Market S-6ren">
gpt4 book ai didi

ruby-on-rails - 在 has_many :through relationships 中使用 collection<
转载 作者:行者123 更新时间:2023-12-04 05:24:21 26 4
gpt4 key购买 nike

在定义了 has_many :through 关系之后,

@user = User.New(:name=>"Bob")
@project = Project.New( :name=>"Market Survey")
@user.projects << @project

有没有一种简单的方法来获取它创建的新中间对象?例如在上面的例子中,如果中间表是“memberships”,那么我可以使用:
@membership = @user.projects << @project

我有一种感觉,必须有一种比我们一直做的更好的方法来做到这一点,即
@membership = Membership.where(:user_id=>x , :project_id=>y).first

最佳答案

我不知道这样做的“魔法”方法。如果你正在寻找比你目前所做的更好读的东西,我能想到的最好的方法就是做这样的事情:

class User < ActiveRecord::Base
# ... other active record stuff here.

def membership_for(project)
memberships.where(:project_id => project.id).first
end
end

# Somewhere else...
@user = User.new(:name=>"Bob")
@project = Project.new(:name=>"Market Survey")
@user.projects << @project
@user.save!

membership = @user.membership_for(@project)

不完美,需要额外的代码,但它确实比你当前的代码读起来更好,这在 Ruby 中很重要。

关于ruby-on-rails - 在 has_many :through relationships 中使用 collection<<object 函数时如何获取中间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13370013/

26 4 0