gpt4 book ai didi

ruby-on-rails - rails : difference between :source => ??和:class_name => ??在模型中

转载 作者:行者123 更新时间:2023-12-03 00:00:46 25 4
gpt4 key购买 nike

您好,对于更复杂的模型,我无法概念化何时使用 :source 以及何时使用 :class

这里我有一个有 friend 的用户的例子。

class User < ActiveRecord::Base
...
has_many :friendships, :dependent => :destroy
has_many :friends, :through => :friendships, :conditions => "status = 'accepted'"
has_many :requested_friends, :through => :friendships, :source => :friend, :conditions => "status = 'requested'", :order => :created_at
has_many :pending_friends, :through => :friendships, :source => :friend, :conditions => "status = 'pending'", :order => :created_at
end


class Friendship < ActiveRecord::Base
attr_accessible :friend_id, :user_id, :status

belongs_to :user
belongs_to :friend, :class_name => "User", :foreign_key => 'friend_id'
end

有人可以解释为什么友谊是 :class_name 而不是 :source 吗?这是因为这只是配对(has_many + :source , own_to + :class_name)吗?

最佳答案

它们在概念上是相同的,只是针对不同的用途需要有所不同。

:source 用于(可选)在使用 has_many through 时定义关联的模型名称; :class_name 在简单的有很多关系中使用(可选)。仅当 Rails 无法自行确定类名时才需要两者。请参阅documentation for has_many in the API here .

关于ruby-on-rails - rails : difference between :source => ??和:class_name => ??在模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13611265/

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