當我把它在軌道控制檯這將返回我從我的數據庫所需的數據:Rails的ActiveRecord的不節能
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控制檯更新數據庫,而不是你期望的那個。 – eiko