簡體   English   中英

Rails控制台與MySQL結果不同

[英]Rails Console Differing MySQL Results

我在使用帶有Rails的LEFT OUTER JOIN時遇到麻煩。 我想我把Ruby代碼記下來了,但是當我將它輸入到rails console我得到一個結果,而當我復制生成的MySQL時,我得到了另一個結果。 rails console缺少整個列(值)。 為什么SQL完全相同,但是卻得到不同的結果? 理想情況下,我希望結果包含value列。 一如既往,任何幫助將不勝感激。

Rails控制台響應

2.0.0-p353 :023 > SecurityItem.joins("LEFT OUTER JOIN  security_role_permissions ON security_role_permissions.security_item_id = security_items.id  AND security_role_permissions.role_id ='1'").select("security_items.name, security_role_permissions.value")

 SecurityItem Load (0.7ms)  SELECT security_items.name, security_role_permissions.value FROM `security_items` LEFT OUTER JOIN security_role_permissions ON security_role_permissions.security_item_id = security_items.id AND security_role_permissions.role_id ='1

=> #<ActiveRecord::Relation 
[#<SecurityItem id: nil, key: "ChangePassword", name: "Change Password">, 
 #<SecurityItem id: nil, key: "AddUsers", name: "Add Users">, 
 #<SecurityItem id: nil, key: "UpdateUsers", name: "Update Users">, 
 #<SecurityItem id: nil, key: "DeleteUsers", name: "Delete Users">]> 

MySQL響應

mysql>  SELECT security_items.name, security_role_permissions.value FROM `security_items` LEFT OUTER JOIN security_role_permissions ON security_role_permissions.security_item_id = security_items.id AND security_role_permissions.role_id ='1';

+-----------------+-------+
| name            | value |
+-----------------+-------+ 
| Change Password |     1 |
| Add Users       |  NULL |
| Update Users    |  NULL |
| Delete Users    |  NULL |
+-----------------+-------+

返回結果中僅顯示SecurityItem類的屬性。 但是,您可以通過'attributes'方法從聯接表中訪問屬性。

security_items = SecurityItem.joins("LEFT OUTER JOIN  security_role_permissions 
ON security_role_permissions.key = security_items.key  AND
security_role_permissions.role_id ='1'").select("security_items.name, 
security_items.key, security_role_permissions.permission")

security_items.each { |security_item| puts security_item.attributes['permission'] }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM