【发布时间】:2017-03-28 01:32:42
【问题描述】:
当我在 Rails 控制台中调用它时,这将返回我想要的数据库中的数据:
class VendorFinding < ActiveRecord::Base
self.table_name = "vendor_findings"
self.primary_key = "vendor_findings_id"
def self.getReleventData()
return VendorFinding
.select([:ContactPerson, :contact_email])
.where(Status: "Open")
end
end
但是当我尝试插入/更新一行时,它假装一切顺利,但是当我检查数据库时没有新记录。
Rails 控制台示例:
irb(main):004:0> myFinding = VendorFinding.new
=> #<VendorFinding vendor_findings_id: nil, ContactPerson: nil, contact_email: nil, Status: nil>
irb(main):007:0> myFinding.ContactPerson = "Myself"
=> "Myself"
irb(main):008:0> myFinding
=> #<VendorFinding vendor_findings_id: nil, ContactPerson: "Myself", contact_email: nil, Status: nil>
irb(main):009:0> myFinding.save
(1.9ms) SAVEPOINT active_record_1
SQL (1.9ms) INSERT INTO `vendor_findings` (`ContactPerson`) VALUES ('Myself')
(1.8ms) RELEASE SAVEPOINT active_record_1
=> true
irb(main):012:0> VendorFinding.where("ContactPerson = 'Myself'")
VendorFinding Load (3.2ms) SELECT `vendor_findings`.* FROM `vendor_findings` WHERE (ContactPerson = 'Myself')
=> #<ActiveRecord::Relation [#<VendorFinding vendor_findings_id: 905, ContactPerson: "Myself", contact_email: nil, Status: nil]>
它假装它更新了数据库,但是当我检查 MySQL 数据库时,记录不存在,并且记录总数与操作前相同。数据库端没有进行验证,参数的类型是 VARCHAR(65),除了 id,它是 INT。
我对 Rails 很陌生,正在尝试让 ActiveRecord 与仍在使用的旧数据库进行交互,因此我无法修改列名以适应 Rails 约定。我可能还需要做其他事情才能使其正常工作吗?或许这根本不是问题。
提前感谢您的宝贵时间。
用 database.yml 文件更新:
development:
adapter: mysql2
host: <dbname>.db.<corpname>.com
port: 8200
database: Safety
encoding: utf8
collation: utf8_general_ci
pool: 5
<password_stuff_removed_for_stack_overflow>
adapter: sqlite3
database: ":memory:"
beta:
adapter: mysql2
host: <dbname>.db.<corpname>.com
port: 8200
database: Safety
encoding: utf8
collation: utf8_general_ci
pool: 5
<password_stuff_removed_for_stack_overflow>
production:
adapter: mysql2
host: <dbname>.db.<corpname>.com
port: 8200
database: Safety
encoding: utf8
collation: utf8_general_ci
pool: 5
<password_stuff_removed_for_stack_overflow>
test:
adapter: sqlite3
database: db/test.sqlite3
【问题讨论】:
-
您能否更新此问题以包含您的 database.yml 文件内容?很有可能,rails 控制台正在更新数据库,而不是您期望的。
标签: ruby-on-rails ruby activerecord