无法为 Authlogic 播种数据

发布于 2024-10-28 20:12:57 字数 1031 浏览 1 评论 0原文

当我在 Rails 3 应用程序中运行 rake db:seed 时,出现错误:

rake aborted!
undefined method 'find_or_create_by_first_name_and_last_name_and_role_and_email_and_password_and_password_confirmation'

下面分别是我的 create_users.rbseeds.rb 文件。为什么没有动态创建 find_or_create_by_* 方法?

def self.up
    create_table :users do |t|
      t.string :first_name, :null => false
      t.string :last_name, :null => false
      t.string :role, :null => false
      t.string :email, :null => false
      t.string :crypted_password, :null => false
      t.string :password_salt, :null => false
      t.string :persistence_token, :null => false
      t.string :current_login_ip
      t.string :last_login_ip
      t.datetime :current_login_at
      t.datetime :last_login_at

      t.timestamps
    end
  end

User.find_or_create_by_first_name_and_last_name_and_role_and_email_and_password_and_password_confirmation(...)

When I run rake db:seed in my Rails 3 application I get the error:

rake aborted!
undefined method 'find_or_create_by_first_name_and_last_name_and_role_and_email_and_password_and_password_confirmation'

Below are my create_users.rb and seeds.rb files respectively. Why isn't the find_or_create_by_* method being dynamically created?

def self.up
    create_table :users do |t|
      t.string :first_name, :null => false
      t.string :last_name, :null => false
      t.string :role, :null => false
      t.string :email, :null => false
      t.string :crypted_password, :null => false
      t.string :password_salt, :null => false
      t.string :persistence_token, :null => false
      t.string :current_login_ip
      t.string :last_login_ip
      t.datetime :current_login_at
      t.datetime :last_login_at

      t.timestamps
    end
  end

User.find_or_create_by_first_name_and_last_name_and_role_and_email_and_password_and_password_confirmation(...)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

江南烟雨〆相思醉 2024-11-04 20:12:57

根据 文档

此动态查找器使用 find_or_create_by_ 调用,如果对象已存在,则返回该对象,否则创建该对象,然后返回该对象。 除非在块中给出受保护的属性,否则不会设置它们。(强调我的)

我猜 passwordpassword_confirmation 是受保护的属性。

According to the docs:

This dynamic finder is called with find_or_create_by_ and will return the object if it already exists and otherwise creates it, then returns it. Protected attributes won’t be set unless they are given in a block. (emphasis mine)

I'm guessing password and password_confirmation are protected attributes.

计㈡愣 2024-11-04 20:12:57

您在角色和电子邮件之间缺少“和”

User.find_or_create_by_first_name_and_last_name_and_role_and_email_and_password_and_password_confirmation(...)

You are missing "and" between role and email

User.find_or_create_by_first_name_and_last_name_and_role_and_email_and_password_and_password_confirmation(...)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文