Authlogic和密码和密码确认属性 - 无法访问?

时间:2010-04-10 07:02:18

标签: ruby-on-rails authlogic factory-bot

我试图测试我在登录后成功创建了一个新用户(使用authlogic)。我已经为用户添加了几个新字段,所以只是想确保用户保存得当。

问题是尽管创建了一个有效的用户工厂,每当我尝试获取其属性以发布到create方法时,都会省略密码和密码确认。我认为这是authlogic在后台执行的安全方法。这导致验证失败并且测试失败。

我想知道如何解决这个问题?我可以手动输入属性,但这看起来不是很干。

 context "on POST to :create" do
            context "on posting a valid user" do
                setup do
                    @user = Factory.build(:user)
                    post :create, :user => @user.attributes
                end
                should "be valid" do
                    assert @user.valid?
                end
                should_redirect_to("users sentences index page") { sentences_path() }
                should "add user to the db" do
                    assert User.find_by_username(@user.username)
                end
            end


##User factory
Factory.define :user do |f|
  f.username {Factory.next(:username) }
  f.email { Factory.next(:email)}
  f.password_confirmation  "password"
  f.password "password"
  f.native_language {|nl| nl.association(:language)}
  f.second_language {|nl| nl.association(:language)}
end

1 个答案:

答案 0 :(得分:2)

您绝对无法从User对象中读取密码和password_confirmation。您需要将:password:password_confirmation合并到@user.attributes哈希。如果您将该哈希存储在与其他工厂定义相同的地方,那么它并不是非常干燥,但它比将其硬编码到测试中更好。