こんな感じサンプル
Rails の規約では、テーブル名は複数形、主キーはid(インクリメンタルな連番)。
しかし実際にはDBに合わせるとそうもいかない。
複数形と主キーがidでない対応は、ここを見ればわかる。Tips/Ruby/rails
ActiveRecord Base で対応する。
主キーがインクリメンタルな連番ではない場合の対応
HowToUseNonDatabaseProvidedIDs 本家のページ
create時にフックして、self.id = XXXXX って感じでやる。
いつもわからなくなるが、param,attributes の値を入れたいが、うまく引き継げなかった。今回はグローバル変数で対応した。このほうがすっきりする
Rubyの変数とスコープ
しかし実際にはDBに合わせるとそうもいかない。
複数形と主キーがidでない対応は、ここを見ればわかる。Tips/Ruby/rails
ActiveRecord Base で対応する。
主キーがインクリメンタルな連番ではない場合の対応
HowToUseNonDatabaseProvidedIDs 本家のページ
create時にフックして、self.id = XXXXX って感じでやる。
いつもわからなくなるが、param,attributes の値を入れたいが、うまく引き継げなかった。今回はグローバル変数で対応した。このほうがすっきりする
Rubyの変数とスコープ
手順
1.OracleでOCI接続する。
2.テーブル名、主キーをセットする。
->主キー、テーブル名命名規則と異なる場合
set_table_name,set_primary_keyが必要
(1)
require 'active_record'
ActiveRecord::Base.establish_connection(
:adapter => "oci",
:username => "***",
:password => "***",
:host => "***")
(2)
class Master <ActiveRecord::Base
set_table_name "TM50RC"
set_primary_key "TM50RC_F02"
has_many :reserve
end
class Reserve <ActiveRecord::Base
set_table_name "RESERVE"
set_primary_key "RCODE"
belongs_to :master,
:foreign_key => "RCODE"
def self.yycall(attributes)
patient = attributes[:parameter]
Reserve.find(:all,:conditions => ["RESERVE.PTID = ? and TM50RC.TM50RC_F01 =?", patient,50],>:include =>:master
end
end
:include の参考は RailsML
1.OracleでOCI接続する。
2.テーブル名、主キーをセットする。
->主キー、テーブル名命名規則と異なる場合
set_table_name,set_primary_keyが必要
(1)
require 'active_record'
ActiveRecord::Base.establish_connection(
:adapter => "oci",
:username => "***",
:password => "***",
:host => "***")
(2)
class Master <ActiveRecord::Base
set_table_name "TM50RC"
set_primary_key "TM50RC_F02"
has_many :reserve
end
class Reserve <ActiveRecord::Base
set_table_name "RESERVE"
set_primary_key "RCODE"
belongs_to :master,
:foreign_key => "RCODE"
def self.yycall(attributes)
patient = attributes[:parameter]
Reserve.find(:all,:conditions => ["RESERVE.PTID = ? and TM50RC.TM50RC_F01 =?", patient,50],>:include =>:master
end
end
:include の参考は RailsML
ActiveRecord findで特定のカラムだけを選択する方法
User.find(:first, >:select => "name AS username")
参考リンク1
PukiWiki
参考リンク2
Webprograming日記
User.find(:first, >:select => "name AS username")
参考リンク1
PukiWiki
参考リンク2
Webprograming日記
ログインフォームで、oracle接続して、結果があればログイン成功
失敗したら、ログインフォームへ戻るページを作っていますが、
validation でうまくいきません。
--login_controller--
if user = User.authenticate(params[:user])
--user.rb--
class User <ActiveRecord::Base
set_primary_key "A"
*1
def self.authenticate(attributes)
nm = attributes[:name]
birth = attributes[:birth]
find(:first, :conditions => [""B" = ? AND "C" = ?, nm,birth])
end
end
*1 にvalidates_format_of :name, :with => /^[1-9a-zA-Z]+$/,
:message => 'は英数字の大小文字しか使えません'
を記載しても うまく動きません。
create,updateでは、うまく行きます。
nm = attributes[:name]
nm = nm.to_i
# nmを数値化することで、回避できましたが、いまいち理解できません
参考サイトを見つけた。参考サイト1くまくま
失敗したら、ログインフォームへ戻るページを作っていますが、
validation でうまくいきません。
--login_controller--
if user = User.authenticate(params[:user])
--user.rb--
class User <ActiveRecord::Base
set_primary_key "A"
*1
def self.authenticate(attributes)
nm = attributes[:name]
birth = attributes[:birth]
find(:first, :conditions => [""B" = ? AND "C" = ?, nm,birth])
end
end
*1 にvalidates_format_of :name, :with => /^[1-9a-zA-Z]+$/,
:message => 'は英数字の大小文字しか使えません'
を記載しても うまく動きません。
create,updateでは、うまく行きます。
nm = attributes[:name]
nm = nm.to_i
# nmを数値化することで、回避できましたが、いまいち理解できません
参考サイトを見つけた。参考サイト1くまくま
ActiveRecordのことが解りやすく書いてある。
参考サイト1.RailsMasterへの道
Oracle ActiveRecordのサンプル
参考サイト2.Oracle With ActiveRecord
ActiveRecord詳細仕様のサンプル
参考サイト3.ActiveRecord_Pukiwiki
参考サイト1.RailsMasterへの道
Oracle ActiveRecordのサンプル
参考サイト2.Oracle With ActiveRecord
ActiveRecord詳細仕様のサンプル
参考サイト3.ActiveRecord_Pukiwiki
参考サイト1.いろいろお勉強
Migration の時のデータ型別指定をまとめます。
Migration の時のデータ型別指定をまとめます。
抽象表現 | Oracle |
:primary_key | NUMBER(38) NOT NULL PRIMARY KEY |
:string | VARCHAR2(255) |
:text | CLOB |
:integer | NUMBER(38) |
:float | NUMBER |
:datetime | DATE |
:timestamp | DATE |
:time | DATE |
:date | DATE |
:binary | BLOB |
:boolean | NUMBER(1) →これはない。 |