【问题标题】:Defining a :class_name with a string or a symbol in Rails 3在 Rails 3 中用字符串或符号定义 :class_name
【发布时间】:2011-09-08 19:53:33
【问题描述】:

如果我有一个Invitation 模型和一个User 模型,而Invitation 模型有一个requester_id 列,为什么这样会起作用,

class Invitation < ActiveRecord::Base
  belongs_to :requester, :class_name => "User"
end

这不起作用?

class Invitation < ActiveRecord::Base
  belongs_to :requester, :class_name => :user
end

一般来说,我什么时候使用符号,什么时候在 Rails 3 中使用字符串?

【问题讨论】:

    标签: ruby-on-rails string associations symbols


    【解决方案1】:

    任一个

    你肯定需要:User,而不是:user.

    核心 Ruby Symbol 定义了一个 #to_sString 定义了一个 #to_sym,,因此在任何 Ruby 上下文中,您经常可以用一个替换另一个。

    我可能想说:如果有疑问,follow the Rails3 API documentation. 除非它没有说,尽管该示例使用字符串。但在这种情况下,它可以工作,您可以安全地使用符号。

    【讨论】:

      【解决方案2】:

      记住它是区分大小写的。所以:User 可能工作。在任何情况下,我都会使用一个字符串,就像它在文档中所说的那样:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-19
        • 2021-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多