Rails:来自 "has_many" 的意外 tSYMBEG 错误
Rails: Unexpected tSYMBEG error from "has_many"
我用的是Windows10+Ubuntu18.04
我在模型中设置了“has_many”,但是当我启动 rails 控制台时出现错误消息:
/home/keaton/.rvm/rubies/ruby-2.6.6/bin/ruby: warning: shebang line ending with \r may cause problems
/home/keaton/.rvm/gems/ruby-2.6.6/gems/bootsnap-1.9.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require': /mnt/c/projects/Kasuri/app/models/user.rb:8: syntax error, unexpected tSYMBEG, expecting do or '{' or '('
has_many :spaces, through: :space_users
^ (SyntaxError)
但我确定我没有拼写错误,rb文件的源代码如下:
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
#:recoverable, :rememberable, :validatable
has_many :space_users, dependent: :destroy
has_many :spaces, through: :space_users
has_many :channel_users, dependent: :destroy
has_many :channels, through: :channel_users
has_many :messages, dependent: :destroy
end
我正在使用 Devise 制作登录功能。这是例外的原因吗?谢谢!
你有一个尾随逗号,它是在下一行被注释掉时留下的:
devise :database_authenticatable, :registerable,
这会导致下一个表达式 has_many :space_users, dependent: :destroy
在您将其作为参数传递给 devise
方法时被处理。所以解析器实际看到的是:
devise :database_authenticatable, :registerable, has_many :space_users, dependent: :destroy
Parens 在嵌套方法调用中不是可选的:
foo :a, bar :b
# (irb):34: syntax error, unexpected symbol literal, expecting `do' or '{' or '(' (SyntaxError)
# works
foo :a, bar(:b)
我用的是Windows10+Ubuntu18.04
我在模型中设置了“has_many”,但是当我启动 rails 控制台时出现错误消息:
/home/keaton/.rvm/rubies/ruby-2.6.6/bin/ruby: warning: shebang line ending with \r may cause problems
/home/keaton/.rvm/gems/ruby-2.6.6/gems/bootsnap-1.9.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require': /mnt/c/projects/Kasuri/app/models/user.rb:8: syntax error, unexpected tSYMBEG, expecting do or '{' or '('
has_many :spaces, through: :space_users
^ (SyntaxError)
但我确定我没有拼写错误,rb文件的源代码如下:
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
#:recoverable, :rememberable, :validatable
has_many :space_users, dependent: :destroy
has_many :spaces, through: :space_users
has_many :channel_users, dependent: :destroy
has_many :channels, through: :channel_users
has_many :messages, dependent: :destroy
end
我正在使用 Devise 制作登录功能。这是例外的原因吗?谢谢!
你有一个尾随逗号,它是在下一行被注释掉时留下的:
devise :database_authenticatable, :registerable,
这会导致下一个表达式 has_many :space_users, dependent: :destroy
在您将其作为参数传递给 devise
方法时被处理。所以解析器实际看到的是:
devise :database_authenticatable, :registerable, has_many :space_users, dependent: :destroy
Parens 在嵌套方法调用中不是可选的:
foo :a, bar :b
# (irb):34: syntax error, unexpected symbol literal, expecting `do' or '{' or '(' (SyntaxError)
# works
foo :a, bar(:b)