0
我有一個PHP驅動的網站,我正在轉換爲Rails。我目前在MySQL例程中有以下邏輯。將MySQL例程移動到模型
DECLARE FirstWeighinDate DATE;
DECLARE FirstWeighinWeight DECIMAL(5,1);
DECLARE MostRecentWeighinDate DATE;
DECLARE MostRecentWeighinWeight DECIMAL(5,1);
DECLARE NumberOfWeighins INT(11);
DECLARE NumberOfDeficitRecords INT(11);
DECLARE AverageDeficit INT(11);
DECLARE UserHeight INT(11);
DECLARE MostRecentBMI DECIMAL(5,1);
SELECT date INTO FirstWeighinDate FROM tblDeficitEntries WHERE weight IS NOT NULL AND user_id = inUserId ORDER BY date ASC LIMIT 1;
SELECT weight INTO FirstWeighinWeight FROM tblDeficitEntries WHERE weight IS NOT NULL AND user_id = inUserId ORDER BY date ASC LIMIT 1;
SELECT date INTO MostRecentWeighinDate FROM tblDeficitEntries WHERE weight IS NOT NULL AND user_id = inUserId ORDER BY date DESC LIMIT 1;
SELECT weight INTO MostRecentWeighinWeight FROM tblDeficitEntries WHERE weight IS NOT NULL AND user_id = inUserId ORDER BY date DESC LIMIT 1;
SELECT Height INTO UserHeight FROM tblLogins WHERE id = inUserId LIMIT 1;
SELECT COUNT(id) INTO NumberOfWeighins FROM tblDeficitEntries WHERE weight IS NOT NULL AND user_id = inUserId;
SELECT COUNT(id) INTO NumberOfDeficitRecords FROM tblDeficitEntries WHERE user_id = inUserId;
SELECT (SUM(deficit)/NumberOfDeficitRecords) INTO AverageDeficit FROM tblDeficitEntries WHERE user_id = inUserId;
SELECT ((MostRecentWeighinWeight * 703)/(UserHeight * UserHeight)) INTO MostRecentBMI;
SELECT FirstWeighinDate, FirstWeighinWeight, MostRecentWeighinDate, MostRecentWeighinWeight, NumberOfWeighins, NumberOfDeficitRecords, AverageDeficit, MostRecentBMI;
我相信MVC的情況,該邏輯屬於模型。我不確定如何實現這一點。我認爲應該使用虛擬訪問器來完成這項工作。那是對的嗎?如果我應該在模型之外的某個地方有這個地方,它應該去哪裏?我不希望整個代碼在答案中被轉換,但我會非常感謝將要轉換的幾行代碼,以便我能夠實現這個想法。謝謝!
你幾乎是正確的,我的模型是用戶和條目。我如何從我的視角訪問first_weighin_date?使用虛擬訪問器? – Brandon
這是一個在模型上定義的方法,所以你可以調用它。如果'u'是你的用戶對象,'u.first_weighin_date'會計算並返回該值。 – MrTheWalrus
完美,謝謝! – Brandon