开发者

Defining a :class_name with a string or a symbol in Rails 3

开发者 https://www.devze.com 2023-03-10 07:23 出处:网络
If I have a Invitation model and a User model, with the Invitation model having a requester_id column, why does this work,

If I have a Invitation model and a User model, with the Invitation model having a requester_id column, why does this work,

class Invitation < ActiveRecord::Base
  belongs_to :requester, :class_name => "Us开发者_JS百科er"
end

and this doesn't work?

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

In general, when do I use symbols, and when do I use strings in Rails 3?


Either One

You would certainly need :User, not :user.

The core Ruby Symbol defines a #to_s and String defines a #to_sym, so in any Ruby context you may often substitute one for another.

I might be tempted to say: when in doubt, follow the Rails3 API documentation. except it doesn't say, although the example uses a string. But in this case, it works, you can safely use a symbol.


Remember that it is case sensitive. So :User may work. In any case, I would use a string as that's what it says in the docs :)

0

精彩评论

暂无评论...
验证码 换一张
取 消