标签: rails-models

Rails、数据库状态列中的字符串或整数值

我有一个具有状态属性的事件模型,想知道是否应该将其放入字符串或整数字段。事件可以具有三种不同的状态:“正在收集”、“活动中”或“已结束”。如果我应该采用整数解决方案,我应该在某处定义一个常量,以便可以仅使用 CLOSED 代替“2”(我应该在哪里放置这个常量?)

提前致谢!

activerecord database-design ruby-on-rails rails-models

2
推荐指数
1
解决办法
1973
查看次数

按条件Ruby on Rails更新记录

我们可以按条件更新记录而不先检查记录吗?

ruby-on-rails rails-models

1
推荐指数
1
解决办法
2689
查看次数

如何解决:validates.rb:96:在`在块中验证验证':未知的验证器(...)

我开始学习Rails,我无法继续前进,因为我在尝试运行时遇到错误:

bundle exec rspec spec/
Run Code Online (Sandbox Code Playgroud)

我认为错误发生在我的"models/users.rb"文件中:

class User < ActiveRecord::Base
  attr_accessible :email, :name

  before_save { |user| user.email = email.downcase }

  validates :name, presence: true, length: { maximum: 50}
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true, format: {with: VALID_EMAIL_REGEX }, 
                                uniquiness: {  case_sensitive: false }
end
Run Code Online (Sandbox Code Playgroud)

在此之前,我做错了一件事:我应该在哪里打字

      uniquiness: { case_sensitive: false }
Run Code Online (Sandbox Code Playgroud)

我键入:

      uniquiness { case_sensitive: false }
Run Code Online (Sandbox Code Playgroud)

并且,在我看到此错误之前,我在项目中进行了一些更改(创建了迁移,运行本地服务器等).我记得我执行过这些命令:

      bundle exec rake db:migrate
      bundle exec rake db:test:prepare
      bundle exec rspec /spec
Run Code Online (Sandbox Code Playgroud)

以下是我得到的错误:

Rack :: File头参数在Rack 1.5之后替换cache_control./usr/lib/ruby/gems/1.9.1/gems/activemodel-3.2.12/lib/active_model/validations/validates.rb:96:in在块中的救援'在验证中':未知验证器:'UniquinessValidator'(ArgumentError )(...)

有人可以帮帮我吗?谢谢大家:P

ruby ruby-on-rails models rails-models

1
推荐指数
1
解决办法
1109
查看次数

连接两个模型belongs_to/has_many并通过表单中的下拉菜单进行选择

我是 Rails 初学者,我面临一个基本问题。我找到了几个解决方案,但没有一个能够完全描述我的问题。我有两个模型:联系人和组

Group has_many :contacts
Contact belongs_to :group
Run Code Online (Sandbox Code Playgroud)

(通过devise还有第三种用户模型)

创建新联系人时,我希望用户能够通过选择选项(如下拉字段)选择该联系人所属的组。

我在联系人表中添加了一个 :group_id 索引:

class AddGroupIdToContacts < ActiveRecord::Migration
  def change
    add_column :contacts, :group_id, :integer
  end
end
Run Code Online (Sandbox Code Playgroud)

在 view/contacts/_form 中,我使用了 collection_select 选项来输出显示可用组的下拉字段:

<%= form_for(@contact) do |f| %>
  <% if @contact.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@contact.errors.count, "error") %> prohibited this contact from being saved:</h2>

      <ul>
      <% @contact.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  ...

  <div class="field">
    <%= f.label :group_id %><br>
    <%= f.collection_select(:group_id, Group.all, :id, …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails key models rails-models

1
推荐指数
1
解决办法
1379
查看次数

验证模型时出现重复的错误消息

如何在rails应用程序的ruby中复制模型验证错误消息?

validation ruby-on-rails duplication rails-models

0
推荐指数
1
解决办法
1463
查看次数

Rails:将两个查询合并为一个

我是铁杆新手.以下代码以Foo作为模型对象:

a = Foo
a = Foo.where(age: 18)
if params[:sort] == "desc"
  a = a.order("name desc") 
end
Run Code Online (Sandbox Code Playgroud)

这里执行了两个查询,我想将它们组合成一个,或者你可以说我想要执行 Foo.where(age=18).order("name asc")

请记住,当不需要订单时可能存在这种情况,即params [:sort]不等于desc.

请不要给出解决方案

if params[:sort] == "desc"
    a = a.where(age=18).order("name desc") 
else
    a = a.where(age=18)
end
Run Code Online (Sandbox Code Playgroud)

因为它使代码冗余,并且对于更多参数,它可能不起作用.

ruby ruby-on-rails rails-models

0
推荐指数
1
解决办法
265
查看次数

actions_as_votable数据库模型在Rails控制台中不存在,但在PgAadmin中可用

我在我的项目中使用acts_as_votable gem。由于某些奇怪的原因,我无法访问中的Vote模型表Rails console。我重新加载了development环境,甚至重新启动了计算机。

我可以upvote一个模型和get_upvotes.size投票模型。

我想做一些专门的查询,例如Vote.where(...)。当我尝试Vote.all在Rails控制台中查询时,出现错误。顺便说一下,我正在使用postgresql进行开发。

2.0.0-p353 :007 > Vote.all
NameError: uninitialized constant Vote
Run Code Online (Sandbox Code Playgroud)

Vote模型存在于我的模型中,schema.rb而不存在于中app/models。该Vote表位于pgAdmin中。提前致谢。

rubygems ruby-on-rails rails-models pg acts-as-votable

0
推荐指数
1
解决办法
190
查看次数