Определение: class_name со строкой или символом в Rails 3 - PullRequest
3 голосов
/ 05 июня 2011

Если у меня есть модель 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?

Ответы [ 2 ]

2 голосов
/ 06 июня 2011

Любой Один

Вам, безусловно, понадобится :User, а не :user.

Ядро Ruby Symbol определяет #to_s и String определяет #to_sym,, поэтому в любом контексте Ruby вы часто можете заменить один другим.

Я могу испытать искушение сказать: когдав сомнении, следуют документации по Rails3 API. за исключением того, что не сказано, хотя в примере используется строка.Но в этом случае это работает, вы можете смело использовать символ.

0 голосов
/ 06 июня 2011

Помните, что он чувствителен к регистру. Так что :User может работать. В любом случае, я бы использовал строку, как это сказано в документации:)

...