Rubyのアクセッサについての認識
attr_accessor
rubyにおけるインスタンス変数へのアクセッサということで、何となくインスタンス変数を明示的に定義しないといけないのかなと理解してた。
class Hoge
attr_accessor :a, :b
def initialize()
@a, @b = 0, 1
end
end
C#的には、こんな感じかな
class Hoge {
private int a, b;
public int A {
get {return a;}
set {a = value;}
}
public int B {
get {return b;}
set {b = value;}
}
public Hoge() { A = 0; B = 0; }
}
だけど、当然、省略して、こういうのも有効なのね。
class Hoge
attr_accessor :a, :b
def initialize()
self.a = 0
self.b = 1
end
end
class Hoge {
public int A { get; set; }
public int B { get; set; }
public Hoge { A = 0; B = 1; }
}
■
rails3忘備録
・validatesのlength検証で検証内容inはwithinと書いてもOK
validates :bio, length: { within: 0..255 }
・alias_attributeは属性のaliasを作成
# authentication_token -> private_token(alias)
alias_attribute :private_token, :authentication_token
・よく利用する条件式にscopeで名前を付ける
# where(admin: true)にadminsという名前を付ける
scope :admins, where(admin: true)
# lambda式を使用すると名前付きscopeにパラメータを設定できる
scope :not_in_project, lambda { |project| where("id not in (:ids)",
ids: project.users.map(&:id) ) }
JavaScriptのクラスについて
目下勉強中のJavaScriptのクラスについて備忘録
JavaScriptのクラスは、Functionオブジェクトがその役割を担っているので、
こんな感じでクラスを定義してインスタンス化する。
インタフェースというか公開するメソッドは、コンストラクタ内でプロパティに関数オブジェクトを代入することで定義する。
公開しない、いわゆるprivateなメソッドは、コンストラクタ内でローカル変数に関数オブジェクトを代入することで定義する。
var MyClass = function() {
// これがコンストラクタ
this.hoge = function() {
// これが公開するメソッド
}
var.private_hoge = function() {
// これがprivateなメソッド
}
}
同様に、コンストラクタ内でfunction命令で関数を定義しても非公開関数を作れる。
これは、あるオープンソースのコードで使われていたやり方なんだけど、
このやり方の意味と目的については、書籍やgoogle先生では確認できてないので、
上記は、あくまでも結果から推測した解釈。
var MyClass = function() {
// これがコンストラクタ
this.hoge = function() {
// これが公開するメソッド
}
var.private_hoge = function() {
// これがprivateなメソッド
}
function func_hoge() {
// これもprivateなメソッド
}
}
Rails3 覚書2
attr_accessible(*attributes)
public
指定された属性以外は、new(attributes)、attributes=(attributes)、update_attribeutes(attributes)で更新されないようにガードする機構
更新するためには、accessor=で明示的に代入する必要がある。
class Customer < ActiveRecord::Base attr_accessible :name, :nickname end customer = Customer.new(:name => "David", :nickname => "Dave", :credit_rating => "Excellent") customer.credit_rating # => nil customer.attributes = { :name => "Jolly fellow", :credit_rating => "Superb" } customer.credit_rating # => nil customer.credit_rating = "Average" customer.credit_rating # => "Average"
assign_attributes(new_attributes, options = {})
public
ロール名でガードをかけたattr_accessibleを使用することができる。
without_protectionオプションがtreuの場合は、ノーガード戦法
class User < ActiveRecord::Base attr_accessible :name attr_accessible :name, :is_admin, :as => :admin end user = User.new user.assign_attributes({ :name => 'Josh', :is_admin => true }) user.name # => "Josh" user.is_admin? # => false user = User.new user.assign_attributes({ :name => 'Josh', :is_admin => true }, :as => :admin) user.name # => "Josh" user.is_admin? # => true user = User.new user.assign_attributes({ :name => 'Josh', :is_admin => true }, :without_protection => true) user.name # => "Josh" user.is_admin? # => true
Rails3 覚書
cattr_accessor ... クラス変数のアクセッサ定義
validates_of_xxxx ... validatesのほうがRails3っぽい?
MongoDBインストール覚書
Windows版インストール
- 基本的には、ファイルを解凍して配置するだけ
- サービスに登録する場合は、以下の手順でインストールする必要あり
1. 設定ファイルの作成とログ出力パスの設定 |
echo logpath=C:\mongodb\log C:\mongodb\mongod.cfg 公式マニュアルでは、ログ出力フォルダを指定するように記載されているが、 実際には、ログファイル名まで指定する必要がある。 echo logpath=C:\mongodb\log\mongodb.log > C:\mongodb\mongod.cfg
|
---|---|
2. インストールコマンド実行 |
mongod.exe --config C:\mongodb\mongod.cfg --install
|
3. サービスの実行 |
netstartMongoDB
|
とりあえず以上