外表没有生成方法

时间:2011-07-11 03:18:42

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我有一个用户表,其中包含一些我可以用方法调用的属性(这是由设计生成的):

user.name

但是我创建了另一个表,因为用户has_one服务器。这些是由rails的外键魔法链接的。我希望能够通过使用方法调用类似于用户表的方法,但在尝试调用user.server.created_at

时总是会抛出此错误
NoMethodError: undefined method `created_at' for #<ActiveRecord::Relation:0x000001036e5a38>

然后我尝试这样做:

user.server[:created_at]

这引发了这个错误:

Typerror: can't convert Symbol into Integer

我听说attr_accessor可能适合创建方法,但我不确定从哪里开始使用Rails,如果这甚至是个好主意。

编辑:

我正试图结束这样的事情:

time_left = (Time.now.to_i - current_server[:created_at].to_i)

除了语法正确。 Created_at确实存在,并且正在以正确的时间写入。

用户模型:

devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  has_one :server

  # Setup accessible (or protected) attributes for your model
  attr_accessible :name, :email, :password, :password_confirmation, :remember_me

服务器型号:

class Server < ActiveRecord::Base
  belongs_to :user
end

谢谢!

1 个答案:

答案 0 :(得分:1)

created_at列是否实际存在于名为servers的表中?

第二种语法是错误的。我不知道它为什么会出现这个错误,但我不希望它能起作用。

发布更多完整代码可能有助于调试。