在localhost:3000上运行我的应用程序时出错

时间:2014-12-17 17:22:55

标签: ruby-on-rails ruby activerecord localhost

我目前正在使用rails应用程序上的ruby,rails 4。

我做了一些更改,并开始使用单个表继承,这显然导致了问题。

这是控制台打印出来的:

Completed 500 Internal Server Error in 3113ms

ActionView::Template::Error (undefined method `seller’ for #<User:0x00000105b10318>):
    81:             <!-- Collect the nav links, forms, and other content for toggling -->
    82:             <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
    83:                 <%= render_navigation :context => (current_user.blank? ? :guest : :user) %>
    84:                 <%= render_navigation :expand_all => true, :context => :auth %>
    85:             </div><!-- /.navbar-collapse -->
    86:         </div><!-- /.container-fluid -->
    87:     </nav>
  app/views/layouts/home.html.erb:84:in `_app_views_layouts_home_html_erb___658910842130911230_2169593320'
  app/controllers/home_controller.rb:7:in `main

作为一个新的编码器,我只能猜测用户使用旧方法将它们存储为Seller存在某些问题。我们现在使用Seller的单表继承,这是:

class User < ActiveRecord::Base

  class Seller < User; end
  • 如果我是正确的,这些用户存储在哪里?我使用Rails S命令
  • 运行此操作
  • 如果我错了,请随意拍我的手腕,请指出我正确的方向! :)

谢谢:D

2 个答案:

答案 0 :(得分:0)

如果您对rails上的ruby不熟悉,我建议您不要使用单表继承,很多事情都会破坏(例如链接,表单,控制器的操作,等...)并修复它们你应该了解框架的基础知识。所以我建议你做的只是在users表中添加一个布尔列:

rails g migration AddSellerToUsers seller:boolean

这将更容易维护,并允许您验证用户是否是卖家,以便您可以在您的观看中执行以下操作:

<% if current_user.seller? %>
# show things that are specific to sellers
<% end %>

如果您真的想在这里使用单表继承,这是一个很棒的教程,可以帮助您了解工作原理:http://samurails.com/tutorial/single-table-inheritance-with-rails-4-part-1/

答案 1 :(得分:0)

- 首先,您需要在users表中添加一个类列(最好避免使用类型列,因为它已经被rails使用了):rails g migration AddClassToUsers class:string

-run rake db:migrate

- 在您的用户模型中添加:

self.inheritance_column = :class

(这将指定sti的列)

def self.classes
    %w(Seller)
 end

所以稍后您可以执行以下操作:

def self.classes
    %w(Seller Buyer Guest)
 end

- 从用户模型中删除此行:

class Seller < User; end

- 在models文件夹中创建卖家模型文件:

# app/models/seller.rb 
class Seller < User; end

有关详情,请务必关注此博文:http://samurails.com/tutorial/single-table-inheritance-with-rails-4-part-1/

希望这会有所帮助