我有一个 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”以便成功运行迁移?
我有一个运行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可以在哪里隐藏,如何删除?
我有一个模型“政策”。在该模型中,我对保单持有人和保费金额进行了存在验证。我正在尝试为此模型编写一个 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)