Ruby on rails 动态方法赢得';在应用程序中不工作?

Ruby on rails 动态方法赢得';在应用程序中不工作?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我仍处于Ruby和RoR的学习阶段,但我已经遇到了一个问题。 我创建了一个名为Users的脚手架,其中包含字段“name”和“password”。 后来,我还添加了更多字段,如“pin”和“salt” 现在,虽然User.find_by_name和find_by_password工作得很好,但出于某种原因,find_by_pin似乎不起作用。我试过用谷歌搜索一下,但什么也没找到 我还在ruby控制台(rails控制台)中尝试了相同的方法,出于某种原因,它在那里工作得非常好——它返回的数据与预期的

我仍处于Ruby和RoR的学习阶段,但我已经遇到了一个问题。 我创建了一个名为Users的脚手架,其中包含字段“name”和“password”。 后来,我还添加了更多字段,如“pin”和“salt”

现在,虽然User.find_by_name和find_by_password工作得很好,但出于某种原因,find_by_pin似乎不起作用。我试过用谷歌搜索一下,但什么也没找到

我还在ruby控制台(rails控制台)中尝试了相同的方法,出于某种原因,它在那里工作得非常好——它返回的数据与预期的一样正确

有什么想法吗

编辑1:

正如有人在评论中所说,假设我正在使用以下代码:(是的,cookies[:pin]已设置)

后来我做了这个:

<%= get_user %>
编辑2:

我试过这个:

def get_user

    user = User.find_by_name('Crembo')
    user.pin  # returns 753e345a113471a6775e242f444704fe

    user = User.find_by_pin(user.pin)
    if user.nil?
        'is nil'
    else
        'exists'
    end
end
它返回“为零”。这有什么意义

为了扩大这一范围

def pin_check
    user = User.find_by_name('Crembo')

    if user.pin == cookies[:pin]
        'true'
    else
        'false'
    end
end
返回true

编辑3:

如评论中所述,我的用户模型:

class User < ActiveRecord::Base
    has_many :posts

    validates_uniqueness_of :name

    def password_matches?(password_to_match)
        self.password == Digest::SHA512.hexdigest(password_to_match)
    end
end
class用户
好的,显然问题出在SQLite上。出于某种原因,它决定它不能正常工作。
我切换到MySQL,现在一切正常。

rake db:migrate
应该会对你有所帮助。当你尝试使用
find by_pin
时会发生什么?你需要详细说明它们是如何“似乎不起作用”的。到目前为止,你已经做了10次了,但仍然一无所获。添加了一个James想要的解释。看起来你没有这个用户有这样的Pink,显然,我是瞎子,因为find_by_pin在rails控制台中不起作用,只是在应用程序中。。。我确实有这样一个用户有这样一个pin。我不是很聪明,但也不是那么愚蠢。
def pin_check
    user = User.find_by_name('Crembo')

    if user.pin == cookies[:pin]
        'true'
    else
        'false'
    end
end
class User < ActiveRecord::Base
    has_many :posts

    validates_uniqueness_of :name

    def password_matches?(password_to_match)
        self.password == Digest::SHA512.hexdigest(password_to_match)
    end
end