我更新了database.yml,以便出于安全目的从文件中获取凭据,并通过erb调用将其替换为从文件中读取信息的对象。
当涉及到身份验证时,这似乎工作正常,但是当设计生成的视图似乎中断时。
这个版本的database.yml打破了它:
development:
adapter: sqlserver
host: my_server.xxx.rds.amazonaws.com
port: 1433
database: MyDatabase
username: <%= CredentialsManager.get_db_user %>
password: <%= CredentialsManager.get_db_pass %>
但是控制台和不调用身份验证的页面访问模型属性没有问题。
然而,像devise / sessions / new.html.erb这样的视图似乎在寻找User模型的错误位置。表单中断包含这些错误,其中用户模型似乎没有“email”属性:
Processing by Devise::SessionsController#new as HTML
Rendered devise/sessions/new.html.erb within layouts/application (6.0ms)
Completed 500 Internal Server Error in 18ms
ActionView::Template::Error (undefined method `email' for #<User >):
3: <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
4: <div><%= f.label :email %>
5: <br/>
6: <%= f.email_field :email %></div>
7:
8: <div><%= f.label :password %>
9: <br/>
app/views/devise/sessions/new.html.erb:6:in `block in _app_views_devise_sessions_new_html_erb__882742671_47657856'
app/views/devise/sessions/new.html.erb:3:in `_app_views_devise_sessions_new_html_erb__882742671_47657856'
Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms)
Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (16.0ms)
检查| f |调试器中的参数显示它具有类User的@object属性,但@object的@attributes散列是空散列,而@column_names是空数组。
有没有人知道如何解决这个问题?我需要从database.yml中获取凭据,这就是我想要的方式。
环境Rails 3.2.11 设计2.1.2 守望者1.2.1
答案 0 :(得分:0)
通过将数据库用户名从“asadmin_app”更改为“asadmin”来解决此问题 不知道为什么设计不喜欢带有下划线的db用户名,但它似乎对我来说是某种错误。 Rails itsef和SQL Server(后备数据库)在用户名中对_没有任何问题,但是当设计和warden得到涉及时,soemthing变得棘手。