我剛剛學會了如何通過tag a record查詢該標籤,但我不確定它是否適用於這種情況。我想在我的模型上有一列包含任意鍵的散列(即它們可能與每個記錄不同),然後我希望能夠通過這些鍵/值進行查詢。Rails通過嵌套鍵/值查詢
因此,像這樣:
my_dog = Pet.new
my_dog.traits = {
:weight => 20,
:has_shots => true,
:color => 'brown'
}
their_cat = Pet.new
their_cat.traits = {
:weight => 4,
:has_shots => false,
:color => 'brown'
}
我知道我可以序列化這個數據,如果所有我想做的就是輸出它以後。但是我想在這裏實現的是通過散列中的鍵來查詢這些記錄的能力。例如(顯然錯誤的查詢語法):Pet.where(traits: 'weight < 25 AND color = "brown"')
。
這種事情可能嗎?
如果使用postgres和hstore列數據類型http://nandovieira.com/using-postgresql-and-hstore-with-rails。你引用的鏈接是使用連接表標記,爲什麼要使用散列?連接表有很多好處。 – Swards
您可以使用Rails的內置'serialize'方法,但在這些序列化的值上創建SQL條件將非常困難。如果您使用的是PostgreSQL,請參閱HStore,如@Swards所述。如果不使用PostgreSQL,我建議你使用另一個表(類似'PetTrait',持有'pet_id','trait_name'和'trait_value')。那麼在SQL – MrYoshiji