小编has*_*ket的帖子

Rails:ArgumentError - 您无法定义已定义的列

我有一个 Rails 6 应用程序 (6.0.0rc1)。它的书籍和作者模型具有 has_many :through 关联。我创建了一个连接表

rails g migration CreateJoinTableAuthorsBook author:references books:references
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我错误地命名了该表,并且错误地引用了该书。我删除了迁移并创建了新的迁移

rails g migration CreateJoinTableAuthorsBooks author:references book:references
Run Code Online (Sandbox Code Playgroud)

现在,当我运行迁移时,我得到了

ArgumentError: you can't define an already defined column 'author_id'.
Run Code Online (Sandbox Code Playgroud)

我已经搜索了整个 Rails 应用程序,但在任何地方都找不到“author_id”。我运行了上一次迁移(值不正确的迁移)。如何删除之前的“author_id”以便成功运行迁移?

ruby-on-rails database-migration has-many-through

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

Autoprefixer不支持Node v4.8.2。更新它

我有一个运行Rails 5.2.1和Ruby 2.2.1的Rails应用程序。运行Rails服务器时,出现以下错误:

Autoprefixer doesn’t support Node v4.8.2. Update it.
Run Code Online (Sandbox Code Playgroud)

当我进入控制台以检查安装的Node版本时,node -v我得到:

v10.11.0
Run Code Online (Sandbox Code Playgroud)

输入时nvm ls,我得到:

default -> node (-> v10.11.0)
node -> stable (-> v10.11.0) (default)
stable -> 10.11 (-> v10.11.0) (default)
iojs -> N/A (default)
lts/* -> lts/carbon (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.14.4 (-> N/A)
lts/carbon -> v8.12.0 (-> N/A)
Run Code Online (Sandbox Code Playgroud)

我在Stackoverflow上查看了其他答案,并且大多数人都提到了therubyracer gem,但我没有为此应用安装该gem。此版本的Node可以在哪里隐藏,如何删除?

ruby ruby-on-rails node.js

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

MiniTest 模型验证测试失败

我有一个模型“政策”。在该模型中,我对保单持有人和保费金额进行了存在验证。我正在尝试为此模型编写一个 MiniTest 测试。由于某种原因,我的测试失败了。

这是我的模型:

class Policy < ApplicationRecord
  belongs_to :industry
  belongs_to :carrier
  belongs_to :agent

  validates :policy_holder,  presence: true
  validates :premium_amount, presence: true
end
Run Code Online (Sandbox Code Playgroud)

这是我的测试:

require 'test_helper'

class PolicyTest < ActiveSupport::TestCase
  test 'should validate policy holder is present' do
    policy = Policy.find_or_create_by(policy_holder: nil, premium_amount: '123.45',
                                      industry_id: 1, carrier_id: 1,
                                      agent_id: 1)
    assert_not policy.valid?
  end

  test 'should validate premium amount is present' do
    policy = Policy.find_or_create_by(policy_holder: 'Bob Stevens', premium_amount: nil,
                                      industry_id: 1, carrier_id: 1,
                                      agent_id: 1)
    assert_not policy.valid?
  end

  test 'should be …
Run Code Online (Sandbox Code Playgroud)

testing ruby-on-rails minitest

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